import sqlite3
import os
import webbrowser
import time

def clear_all_chat_data():
    """清理所有聊天相关数据"""
    print("===== 开始清理所有聊天相关数据 =====")
    
    # 连接到数据库
    db_path = 'aichat.db'
    if not os.path.exists(db_path):
        print(f"数据库文件 {db_path} 不存在")
        return False
    
    conn = sqlite3.connect(db_path)
    cursor = conn.cursor()
    
    try:
        # 获取所有表
        cursor.execute("SELECT name FROM sqlite_master WHERE type='table'")
        tables = [table[0] for table in cursor.fetchall()]
        
        # 需要清理的表
        tables_to_clear = ['session_model_map', 'messages', 'sessions']
        
        total_cleared = 0
        
        for table_name in tables_to_clear:
            if table_name in tables:
                # 获取记录数
                cursor.execute(f"SELECT COUNT(*) FROM {table_name}")
                count = cursor.fetchone()[0]
                
                if count > 0:
                    print(f"清理 {table_name} 表中的 {count} 条记录...")
                    cursor.execute(f"DELETE FROM {table_name}")
                    total_cleared += count
                else:
                    print(f"{table_name} 表已经是空的")
            else:
                print(f"{table_name} 表不存在")
        
        # 提交更改
        conn.commit()
        print(f"\n总共清理了 {total_cleared} 条聊天相关记录")
        
        return True
        
    except Exception as e:
        print(f"清理数据时出错: {str(e)}")
        conn.rollback()
        return False
    finally:
        conn.close()

def clear_browser_cache():
    """打开浏览器缓存清理页面"""
    print("\n===== 打开浏览器缓存清理页面 =====")
    
    cache_file = os.path.join('frontend', 'clear_localstorage.html')
    if os.path.exists(cache_file):
        file_path = os.path.abspath(cache_file)
        print(f"正在打开缓存清理页面: {file_path}")
        webbrowser.open(f'file://{file_path}')
        print("请在打开的页面中点击'清空所有会话数据'按钮，然后刷新聊天应用")
        return True
    else:
        print(f"缓存清理页面 {cache_file} 不存在")
        return False

if __name__ == "__main__":
    # 清理数据库中的聊天数据
    db_cleared = clear_all_chat_data()
    
    # 打开浏览器缓存清理页面
    cache_opened = clear_browser_cache()
    
    print("\n===== 清理完成 =====")
    if db_cleared:
        print("✓ 数据库中的聊天数据已清理")
    else:
        print("✗ 数据库清理失败")
        
    if cache_opened:
        print("✓ 已打开浏览器缓存清理页面")
        print("  请在页面中点击'清空所有会话数据'按钮，然后刷新聊天应用")
    else:
        print("✗ 无法打开浏览器缓存清理页面")
        print("  请手动打开 frontend/clear_localstorage.html 文件")
